package rolesystem.roles.carry;

import rolesystem.agentlogic.utilityclasses.CarrierData;
import rolesystem.agentlogic.utilityclasses.PositionSq;
import rolesystem.core.RoleAction;
import rolesystem.roles.KnownEvent;


public class Manager 
{

	/**
	 * Role identifier.
	 */
	public static final String ROLE_ID="carry.Manager";

	
	public static final KnownEvent KE_dataReceived=new KnownEvent("sendData", Explorer.ROLE_ID, CarrierData.class);
	
	public static final KnownEvent KE_agentReached=new KnownEvent("agentReached", Explorer.ROLE_ID, CarrierData.class);
	
	public static final KnownEvent KE_moveAck=new KnownEvent("moveAck", Explorer.ROLE_ID);
	
	public static final KnownEvent KE_iAmHere=new KnownEvent("iAmHere", Explorer.ROLE_ID, PositionSq.class);
	
	
	
	/**
	 * Answer to the carrier request of assistance.
	 * @param addressee Seller
	 */
	public static RoleAction managerAccepted(int addressee)
	{
		return new RoleAction("managerAccepted", addressee);
	}
	
	/**
	 * Asks for help.
	 * @param addressee Carrier
	 */
	public static RoleAction reqHelp(int addressee, PositionSq pos)
	{
		return new RoleAction("reqHelp", addressee, pos);
	}
	
	public static RoleAction followMe(int addressee, PositionSq pos)
	{
		return new RoleAction("followMe", addressee, pos);
	}
	
	public static RoleAction moveOneSquare(int addressee, PositionSq pos)
	{
		return new RoleAction("moveOneSquare", addressee, pos);
	}
	
	public static RoleAction carryFinished(int addressee)
	{
		return new RoleAction("carryFinished", addressee);
	}
	
	public static RoleAction youNeeded(int addressee)
	{
		return new RoleAction("youNeeded", addressee);
	}
	
	public static RoleAction sameObjNoManager(int addressee)
	{
		return new RoleAction("sameObjNoManager", addressee);
	}
	
	public static RoleAction iAmManagerHere(int addressee, PositionSq pos)
	{
		return new RoleAction("iAmManagerHere", addressee, pos);
	}
}
